package com.piece.core.message.client;

import com.piece.core.framework.support.response.AjaxResponse;
import com.piece.core.message.client.dto.SmsReceiveRespDTO;
import org.apache.commons.collections.map.LinkedMap;
import java.util.List;

/**
 * 短信客户端SDK
 */
public interface SmsClient {

    /**
     * 渠道编码
     */
    String getCode();

    /**
     * 发送消息
     *
     * @param mobile 手机号
     * @param apiTemplateId 短信 API 的模板编号
     * @param templateParams 短信模板参数
     */
    AjaxResponse sendSms(String mobile, String apiTemplateId, LinkedMap templateParams);

    /**
     * 解析接收短信的接收结果
     *
     * @param text 结果
     * @return 结果内容
     */
    List<SmsReceiveRespDTO> parseSmsReceiveStatus(String text) throws Throwable;

    /**
     * 查询指定的短信模板
     *
     * @param apiTemplateId 短信API模板编号
     * @return 短信模板
     */
    AjaxResponse getSmsTemplate(String apiTemplateId);

    /**
     * 查询短信发送明细
     *
     * @param mobile
     * @param bizId     业务流水号
     * @param pageIndex 当前页号，从第1页开始
     * @param pageSize  每页展示数量
     */
    AjaxResponse queryDetail(String mobile, String bizId, int pageIndex, int pageSize);
}